As media production migrates to packet-based data infrastructures, personal computer (PC) based software must be able to transmit high bitrate streams of data over a network to transport uncompressed video and audio data. Moreover, because many of the devices consuming these data streams perform minimal data buffering, senders in the network should try to space the transmitted data packets as evenly as possible to achieve a constant flow of packets instead of a burst for each frame or field in order to minimize data buffering requirements by the media consuming devices.
Moreover, in recent years, the Society of Motion Picture and Television Engineers® (SMPTE®) has standardized the use of IEEE 1588 precision time protocol (“PTP”) to provide time-aligned signal generation and permit the interoperable use of IP-based media equipment with conventional genlocked serial digital interface (“SDI”) equipment. These standards, and, in particular, SMPTE ST 2059-1, require that frames should to be sent at exactly the same time by all devices. As a result, it is even more critical that transmitting devices avoid transmission delays and packet bursts.
Modern non-realtime PC operating system (such as Windows® and most versions of Linux®, for example) provide little control on when certain operations will be executed, including, for example, when network data packets will be sent. As a result, it is nearly impossible for devices running on these operating systems to evenly space the transmission of such data packets. In particular, each individual data packet that is sent by a user mode application running on one of these existing operating systems will have to transition between the user mode and kernel mode, which inevitably leads to the delay of transmitting data packets.
FIG. 1 illustrates a conventional operating system network model. As shown, the operating system transitions between two distinct modes: user mode 10 and kernel mode 20. In user mode 10, the executing applications (e.g., applications 12A, 12B and 12C) have limited access to the computer hardware or reference memory, but cannot access the NIC hardware or NIC memory and must delegate this access to the system application programming interfaces (“APIs”). In contrast, in kernel mode 20, the executing code has complete and unrestricted access to the underlying hardware (including the NIC) and can execute any CPU instruction and reference any memory address. Accordingly, when a user mode application (e.g., application 12A) needs to transmit a data packet, the data packet must transition through multiple layers (e.g., network layers 22A, 22B . . . 22N) of the network stack of the kernel mode 20, which might include a firewall, anti-virus layers and the like, before reaching the driver 24 of the network interface controller (“NIC”), which ultimately transmits the data packet. As such, each of these steps to transmit every data packet requires time that cause problems when try to send for high bit rate/packet rate since every operation must be performed on the same thread to guarantee the packet order is kept during transmission.
Moreover, the ever improving video standards and resolution capabilities of media consuming devices only further increases the requirements for bit rate and packet rate. For example, current video standards and resolution can reach up to 1 million packets per second for a single stream at 12 Gbps (e.g., for a SMPTE ST 2022-6 ultra-high definition (“UHD”) stream), meaning that a packet has to be sent every about microsecond (μs).
Accordingly, a system and method is desired for timely and uniform distribution real-time data packet transmission of a network.